The entire contents of Japanese Patent Application No. H09-366782 filed on Dec. 26, 1997 are incorporated herein by reference.
The present invention relates to a disk storage system including a disk array unit called a RAID (Redundant Arrays of Inexpensive Disks) and, more particularly, to a disk storage system having an improved data update function.
A disk array unit (called a RAID) constituted by a plurality of disk drives is known. For example, a RAID is a disk storage system which is connected to a network server and can store a large volume of data. As a high-speed data write method for such a RAID, in particular, a method of writing new data in bulk in data update processing without rewriting the new data in the storage area of old data has been proposed. More specifically, the new data is stored in a prepared write buffer, and the stored new data is written in empty areas prepared in disk drives in bulk (see Jpn. Pat. Appln. KOKAI Publication Nos. 6-214720 and 6-266510).
A conventional write method (data update method) will be briefly described with reference to FIG. 1. Referring to FIG. 1, reference symbols L1 through L99 denote logical blocks; and P1 through P56, physical blocks in a disk unit (disk drives). Assume that logical blocks L6, L4, L2, L12, L7, and L11 are to be updated. The old data of these logical blocks are present in physical blocks P6, P4, P2, P12, P7, and P11 in the disk unit. According to a general write method, the contents of physical blocks P6, P4, P2, P12, P7, and P11 are updated. According to a high-speed write method, however, while the data of physical blocks P6, P4, P2, P12, P7, and P11 are maintained, the new data of logical blocks L6, L4, L2, L12, L7, and L11 are written in physical blocks P51, P52, P53, P54, P55, and P56 as other prepared empty areas in bulk. With this operation, the number of writes (six writes are required in the general write method) can be reduced to three in the high-speed write method when, for example, two physical blocks are written in bulk, thereby attaining an improvement in write performance.
For the sake of descriptive convenience, in the example shown in FIG. 1, two physical blocks are written in one disk in bulk. In practice, however, several ten physical blocks are written in bulk. According to a RAID architecture of level 4 (RAID4 architecture) and a RAID architecture of level 5 (RAID5 architecture), since one stripe (N*K logical blocks; N is the number of drives, and K is the number of blocks) can be rewritten in bulk, no disk read is required for parity maintenance, and the overhead in a write can be reduced. According to the RAID4 architecture, data are arranged in large units such as sectors and blocks instead of small units such as bits and bytes, and each disk is independently operated in accordance with a request to read small-volume data. According to the RAID5 architecture, redundant data (parity data) is cyclically set in the respective data disks instead of being stored in a dedicated parity disk.
Since the latest data of logical blocks L6, L5, L2, L12, L7, and L11 are present in physical blocks P51 through P56 in the disk unit, the contents of an indirect map are rewritten to indicate correct disk positions. The data of logical blocks are read out after the latest disk positions are obtained by looking up this indirect map. No old data is therefore erroneously read out.
In the conventional high-speed write method described above, as shown in FIG. 1, a write buffer is prepared in a nonvolatile memory, the empty area in the disk unit is divided into blocks, and data are sequentially compacted/stored in the empty blocks through the write buffer. For this reason, even if contiguous data are to be read out, the data must be divided into blocks, and the addresses must be converted in units of blocks. When, therefore, a request to read data exceeding the data length of a logical block is sent from a host system, the requested data must be divided into a plurality of logical blocks.
In addition, every time data update processing is performed, in particular, a search for data to be updated in the entries corresponding to a buffer management table must be performed by using a conversion map. The processing time is therefore prolonged by the time required for this search. Furthermore, the conversion map is dependent on the storage capacity of the disk unit and must be created in the main memory of the system. This conversion map is therefore a factor that limits the capacity used by the main memory.